package com.mofang.ticketing.user.serve.role.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mofang.ticketing.user.mapping.entity.SysRoleDO;
import com.mofang.ticketing.user.mapping.entity.SysRolePermissionDO;
import com.mofang.ticketing.user.mapping.entity.SysUserDO;
import com.mofang.ticketing.user.serve.role.dto.request.RoleListPageReqDTO;
import com.mofang.ticketing.user.serve.role.dto.response.RoleDetailRespDTO;
import com.mofang.ticketing.user.serve.role.dto.response.RoleListPageRespDTO;
import com.mofang.ticketing.user.serve.role.dto.response.MerchantRoleSelectRespDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author LGC
 * @date 2023/3/15 14:42
 */
public interface RoleMapper {

    /**
     * 角色分页列表
     *
     * @param pageParam
     * @param dto
     * @return
     */
    Page<RoleListPageRespDTO> roleListPage(Page<RoleListPageRespDTO> pageParam, @Param("dto") RoleListPageReqDTO dto);

    /**
     * 查询角色账号数
     *
     * @param roleId
     * @return
     */
    int selectAccountNum(@Param("roleId") Long roleId);

    /**
     * 角色详情
     *
     * @param roleId
     * @return
     */
    RoleDetailRespDTO roleDetail(@Param("roleId") Long roleId);

    /**
     * 批量插入角色权限
     *
     * @param list
     */
    void insertRolePermissionBatch(@Param("list") List<SysRolePermissionDO> list);


    /**
     * 查询该角色具有哪些用户
     *
     * @param roleId
     * @return
     */
    List<SysUserDO> selectUserListByRoleId(@Param("roleId") Long roleId);


    /**
     * 获取商户角色选择列表
     *
     * @param merchantId
     * @return
     */
    List<MerchantRoleSelectRespDTO> merchantRoleSelect(@Param("merchantId") Long merchantId);


    /**
     * 根据角色code获取角色
     *
     * @param roleCode
     * @return
     */
    SysRoleDO selectRoleByRoleCode(@Param("roleCode") String roleCode);

}
